var raiz = "/SISINF-PNP";
var raiz_digitaliza = "/SISINF-PNP/Informacion";
var regPersonaActual = null;
var regCarpetaActual = null;
var regFolioActual = null;
var localUsuario=null;
var idDocumentoOtros = 0;

function cargarIdUsuario(){
    new Ajax.Request(raiz+"/jsonUsuarioSesion.jsp",{
        method: "post",
        asynchronous:false,
        onSuccess: function(transport){
            var usuario=transport.responseText.evalJSON();
            localUsuario = usuario.nusua_identificador;
        },
        onFailure: function(t){
            alert(t.responseText);
        }
    });
}

var chkIndexado = new Ext.grid.CheckColumn({
    header: "¿Indexado?",
    dataIndex: 'indexado',
    width: 65
});
chkIndexado.onMouseDown=function(e,t){};

function digitalizar() {
    cargarIdUsuario();
    var frmBuscarAdministrado = new Ext.Panel({
        bodyStyle: "background-color:#DFE8F6; border:0",
        autoLoad: {
            url : "frmBuscarAdministrado.html"
        }
    });
    var dsExpedientes = new Ext.data.Store({
        url: "obtener-expedientes.jsp",
        autoDestroy: true,
        reader: new Ext.data.JsonReader({
            root: "expedientes",
            fields:[{
                name: "id"
            },{
                name: "nroExpediente"
            },{
                name: "nombreCompleto"
            },{
                name: "fechaCreacion"
            },{
                name: "nroFolios"
            }]
        })
    });
    dsExpedientes.on("load",function(store){
        cargarExpedientes();
    });
    var grdExpedientes = new Ext.grid.GridPanel({
        id: "grdExpedientes",
        store: dsExpedientes,
        height: 100,
        border: true,
        columns:[new Ext.grid.RowNumberer(),{
            header: "Nro. Exp.",
            dataIndex: "nroExpediente",
            width: 100
        },{
            header: "Apellidos y Nombres",
            dataIndex: "nombreCompleto",
            width: 400
        },{
            header: "Fecha de Creación",
            dataIndex: "fechaCreacion",
            width: 150
        },{
            header: "Nro. Imagenes Exp",
            dataIndex: "nroFolios",
            width: 150
        }],
        tbar:[{
            text: "Anexar Documentos Digitales",
            iconCls:'icon-scan',
            handler: function() {
                cargarDetalleExpediente();
            }
        }]
    });

    var dsFolios = new Ext.data.Store({
        url: "obtener-folios.jsp",
        autoDestroy: true,
        reader: new Ext.data.JsonReader({
            root: "documentos",
            fields:[{
                name: "id"
            },{
                name: "descripcion"
            },{
                name: "idTipoDocumento"
            },{
                name: "descripcionTipoDocumento"
            },{
                name: "folios"
            },{
                name: "indexado",
                type: "bool"

            }]
        })
    });

    dsFolios.on("load", function(store, records, options){
        obtenerIdDocumentoOtros();
    });

    var grdFolios = new Ext.grid.GridPanel({
        id: "grdFolios",
        title: "Detalle Expediente",
        store: dsFolios,
        height: 320,
        border: true,
        tbar:[{
            id: "btnClasificarDocumentos",
            text: "Clasificar Documentos Digitales",
            iconCls:'icon-folder',
            handler: function(){
                modificarFolio(false,"Clasificar Documentos Digitales");
            }
        },"-",{
            id: "btnModificarDocumento",
            text: "Anexar Folios a Documento Digital",
            iconCls:'icon-modify',
            handler: function(){
                modificarFolio(true,"Anexar Folios a Documento Digital");
            }
        },"-",{
            text: "Indexar Documento Digital",
            iconCls:'icon-option',
            handler: function(){
                indexar(localUsuario);
            }
        }
        ],
        columns:[{
            header: "Tipo Documento",
            dataIndex: "descripcionTipoDocumento",
            width: 250,
            renderer:colorDocumento('indexado','descripcionTipoDocumento')
        },{
            header: "Breve Descripcion Documento",
            dataIndex: "descripcion",
            width: 450,
            renderer:colorDocumento('indexado','descripcion')
        },{
            header: "Nro Imagenes.",
            dataIndex: "folios",
            width: 80,
            renderer:colorDocumento('indexado','folios')
        },chkIndexado]
    });
    grdFolios.on("rowclick", function(grid,rowIndex,e){
        regFolioActual = dsFolios.getAt(rowIndex);
        habilitarBotonesFolios();

    });
    var win = new Ext.Window({
        title:'Digitalizar',
        closeAction:'destroy',
        width:900,
        height:480,
        x:0,
        y:0,
        shim:false,
        maximizable:false,
        resizable: false,
        animCollapse:false,
        items:[frmBuscarAdministrado,grdExpedientes,grdFolios]
    });
    win.show();
}

function colorDocumento (indexado,val){
    var texto="";
    if (indexado == 0){
        texto = "<span style='color:red'>"+val+"</span>";
    }else{
        texto = val
    }
    return texto;
}
function buscarPersonal() {

    regPersonaActual = null;
    var dsPersonal = new Ext.data.Store({
        url: "obtener-personal.jsp",
        autoDestroy: true,
        reader: new Ext.data.JsonReader({
            root: "personas",
            fields:[{
                name: "id"
            },{
                name: "nombreCompleto"
            },{
                name: "cpers_codofin",
                type: "string"
            },{
                name: "cpers_nrocip",
                type: "string"
            },{
                name: "cpers_unidad",
                type: "string"
            },{
                name: "cpers_nrodni",
                type: "string"
            },{
                name: "cgrad_descripcion",
                type: "string"
            }]
        })
    });

    var grdPersonal = new Ext.grid.GridPanel({
        id: "grdPersonal",
        store: dsPersonal,
        height: 300,
        border: true,
        plugins:[new Ext.ux.grid.Search({
            mode:'local',
            searchText: 'Filtrar sobre el resultado',
            iconCls:false,
            minLength:2,
            width: 350
        })],
        columns:[{
            header: "DNI",
            dataIndex: "cpers_nrodni",
            sortable:true,
            width: 80
        },{
            header: "Apellidos y Nombres",
            dataIndex: "nombreCompleto",
            width: 350
        },{
            header: "Nro CIP",
            dataIndex: "cpers_nrocip",
            sortable:true,
            width: 100
        },{
            header: "GRADO",
            dataIndex: "cgrad_descripcion",
            sortable:true,
            width: 150
        }],
        tbar:['']
    });

    grdPersonal.on("rowclick", function(grid,rowIndex,e){
        regPersonaActual = dsPersonal.getAt(rowIndex);
    });

    grdPersonal.on("rowdblclick", function(grid,rowIndex,e){
        seleccionarPersona();
    });

    var frmBuscarPersonal = new Ext.Panel({
        bodyStyle: "background-color:#DFE8F6; border:0",
        autoLoad: "frmBuscarPersonal.html"
    });

    var pnlBuscarPersonal = new Ext.Panel({
        items:[frmBuscarPersonal,grdPersonal]
    });

    var win = new Ext.Window({
        id: "winBuscarPersonal",
        modal: true,
        title:'Buscar en Maestro Policial - MASPOL',
        closeAction:'destroy',
        width:700,
        height: 400,
        shim:false,
        maximizable:false,
        resizable: false,
        animCollapse:false,
        items:[pnlBuscarPersonal],
        bbar:[{
            text: "Seleccionar",
            iconCls:'icon-selector',
            handler: function(){
                seleccionarPersona();
            }
        },'-',{
            text:'Cancelar',
            iconCls:'icon-cancel',
            handler: function(){
                var winBuscarPersonal = Ext.getCmp("winBuscarPersonal");
                winBuscarPersonal.destroy();
            }
        }]
    });
    win.show();
}

function filtrarPersonalMaspol(){
    if ($("apellidoPaterno").value!="" || $("apellidoMaterno").value!="" || $("nombres").value !="" ){
        if ($("apellidoPaterno").value.length >= 3 || $("apellidoMaterno").value.length >= 3 || $("nombres").value.length >= 3 ){
            obtenerPersonal();
        }else{
            alert("Debe ingresar por lo menos 3 letras en algun criterio para realizar la busqueda");
        }
    }else{
        alert("Debe ingresar un criterio de busqueda");
    }
}

function obtenerPersonal() {
    var grdPersonal = Ext.getCmp("grdPersonal");
    var dsPersonal = grdPersonal.getStore();
    var form = document.getElementById("frmBuscarPersonal");
    var apellidoPaterno = form.apellidoPaterno.value;
    var apellidoMaterno = form.apellidoMaterno.value;
    var nombres = form.nombres.value;
    dsPersonal.load({
        params: {
            apellidoPaterno: apellidoPaterno,
            apellidoMaterno: apellidoMaterno,
            nombres: nombres
        }
    });
}

function seleccionarPersona(){
    var winBuscarPersonal = Ext.getCmp("winBuscarPersonal");
    if (regPersonaActual == null) {
        Information("Error", "Debe seleccionar una persona");
        return;
    }
    var form = document.getElementById("frmBuscarAdministrado");
    var id = regPersonaActual.get("id");
    var nombre = regPersonaActual.get("nombreCompleto");
    var grado = regPersonaActual.get("cgrad_descripcion");
    winBuscarPersonal.destroy();
    form.nombre.value = nombre;
    form.grado.value = grado;
    var grdExpedientes = Ext.getCmp("grdExpedientes");
    var dsExpedientes = grdExpedientes.getStore();
    dsExpedientes.reload({
        params: {
            id: id
        }
    });
}

function cargarExpedientes(){
    var grdExpedientes = Ext.getCmp("grdExpedientes");
    var dsExpedientes = grdExpedientes.getStore();
    var registro = dsExpedientes.getAt(0);
    if (registro == null) {
        var mensaje="¿Desea crear un expediente?";
        Ext.MessageBox.confirm("Confirmación", mensaje, function(button){
            if(button=="yes"){
                crearExpediente();
            }
        });

    } else {
        var idExpediente = registro.get("id");
        cargarFolios(idExpediente);
    }
}

function crearExpediente() {
    if (regPersonaActual == null) {
        Information("Error", "Debe seleccionar una persona");
        return;
    }
    var win = new Ext.Window({
        autoLoad: {
            url: raiz_digitaliza+"/frmCabeceraExpediente.html",
            callback: function(el,success,response,options){
                obtenerPersonalPolicial();
            }
        },
        id: "winBuscarPersonal",
        modal: true,
        title:'Creación de Expediente Digital',
        closeAction:'destroy',
        width:680,
        height:240,
        shim:false,
        maximizable:false,
        resizable: false,
        animCollapse:false,
        bbar:[{
                text: "Grabar",
                iconCls:'icon-save',
                handler: function(){
                    grabarExpediente();
                }
            },"-",{
                text: "Cancelar",
                iconCls:'icon-cancel',
                handler: function(){
                    var w = Ext.getCmp("winBuscarPersonal");
                    w.destroy();
                }
            }
        ]
    });
    win.show();
}

function grabarExpediente(){
    cargarIdUsuario()
    var form = document.getElementById("frmCabeceraExpediente");
    var id = regPersonaActual.get("id");
    var idPolicial = form.idPolicial.value;
    var numeroExpediente = form.numeroExpediente.value;
    new Ajax.Request(raiz_digitaliza+"/grabar-expediente.jsp",{
        method: "post",
        parameters: {
            id: id,
            idPolicial: idPolicial,
            numeroExpediente: numeroExpediente,
            usuario: localUsuario
        },
        onSuccess: function(t){
            var data = t.responseText.evalJSON();
            if (data.success) {
                var win = Ext.getCmp("winBuscarPersonal");
                win.destroy();
                var grdExpedientes = Ext.getCmp("grdExpedientes");
                var dsExpedientes = grdExpedientes.getStore();
                dsExpedientes.reload({
                    params: {
                        id: id
                    }
                });
            } else {
                Information("Error","Ya existe un expediente con este código");
            }
        },
        onFailure: function(t){
            alert(t.responseText);
        }
    });
}

function obtenerPersonalPolicial(){    
    var form = document.getElementById("frmCabeceraExpediente");
    var id = regPersonaActual.get("id");
    form.nombreCompleto.value = regPersonaActual.get("nombreCompleto");
    var formorigen = document.getElementById("frmBuscarAdministrado");
    form.grado.value = formorigen.grado.value;
    new Ajax.Request(raiz_digitaliza+"/obtener-personal-policial.jsp",{
        method: "post",
        parameters: {
            id: id
        },
        onSuccess: function(t){
            var data = t.responseText.evalJSON();
            if (data.idPolicial != 0){
                var txtFechaBaja = Ext.getCmp("fechaBaja");
                txtFechaBaja.setValue(data.fechaBaja);
                form.idPolicial.value = data.idPolicial;
            }
        },
         onFailure: function(t){
            alert(t.responseText);
        }
    });
}

function cargarDetalleExpediente(){
    var frmDetalleExpediente = new Ext.Panel({
        bodyStyle: "background-color:#DFE8F6; border:0",
        autoLoad: "frmDetalleExpediente.html"
    });

    var frmImagenes = new Ext.Panel({
        bodyStyle: "background-color:#DFE8F6; border:0",
        autoLoad: "frmImagenes.html"

    });

    var win = new Ext.Window({
        id: "winAnexarImagenes",
        modal: true,
        title:'Anexar Imágenes Digitalizadas',
        closeAction:'destroy',
        width:590,
        height:450,
        shim:false,
        maximizable:false,
        resizable: false,
        animCollapse:false,
        items: [
            frmDetalleExpediente,
            frmImagenes
        ],
        bbar:[{
            text: "Grabar",
            iconCls:'icon-save',
            handler: function(){
                guardarImagenesBD();
            }
        },"-",{
                text: "Cancelar",
                iconCls:'icon-cancel',
                handler: function(){
                   win.destroy();
                }
            }
        ]
    });
    win.show();
}

function seleccionarCarpetaOrigen() {
    var ds = new Ext.data.Store({
        url: "obtener-carpetas-origen.jsp",
        autoDestroy: true,
        reader: new Ext.data.JsonReader({
            root: "carpetas",
            fields:[{
                name: "nombre"
            }]
        })

    });

    var grd = new Ext.grid.GridPanel({
        id: "grdCarpetasOrigen",
        store: ds,
        height: 290,
        border: true,
        plugins:[new Ext.ux.grid.Search({
            mode:'local',
            iconCls:false,
            minLength:2,
            width: 350
        })],
        columns:[{
                header: "Nombre del Directorio Expediente",
                dataIndex: "nombre",
                width:300
            }
        ],tbar:['-']
    });
    grd.on("rowclick", function(grid,rowIndex,e){
        regCarpetaActual = ds.getAt(rowIndex);
    });

    var win = new Ext.Window({
        id: "winSeleccionCarpetaOrigen",
        modal: true,
        title:'Directorio Digitalizacion (SOLO LECTURA)',
        closeAction:'destroy',
        width:600,
        height:350,
        shim:false,
        maximizable:false,
        resizable: false,
        animCollapse:false,
        items:[grd],
        bbar:[{
            text: "Seleccionar",
            iconCls:'icon-selector',
            handler: function() {
                seleccionarCarpeta();
            }
        },"-",{
                text: "Cancelar",
                iconCls:'icon-cancel',
                handler: function(){
                   win.destroy();
                }
        }]
    });
    win.on("render",function(component){
       ds.load();
    });
    win.show();
}

function seleccionarCarpeta(){
    if (regCarpetaActual == null) {
        Information("Error", "Debe seleccionar una carpeta");
        return;
    }
    var winCarpeta = Ext.getCmp("winSeleccionCarpetaOrigen");
    var form = document.getElementById("frmDetalleExpediente");
    var carpeta = regCarpetaActual.get("nombre");
    form.carpetaOrigen.value = carpeta;
    winCarpeta.destroy();
    cargarImagenes(carpeta);
}

function cargarImagenes(carpeta) {
    var form = document.getElementById("frmImagenes");
    var disp = form.disponibles;
    new Ajax.Request("cargar-imagenes.jsp",{
        method: "post",
        parameters: {
            carpeta: carpeta
        },
        onSuccess: function(t){
            removeAllOptions(disp);
            var data = t.responseText.evalJSON();
            for(var i = 0;i<data.imagenes.length;i++) {
                var option = document.createElement("option");
                option.value = data.imagenes[i].nombre;
                option.appendChild(document.createTextNode(data.imagenes[i].nombre));
                disp.appendChild(option);
            }
        }
    });
}

function cargarImagenesAgregadas(){
    var form = document.getElementById("frmImagenes");
    var agr = form.agregadas;
    new Ajax.Request("cargar-imagenes-agregadas.jsp",{
        method: "post",
        onSuccess: function(t){
            removeAllOptions(agr);
            var data = t.responseText.evalJSON();
            for(var i = 0;i<data.imagenes.length;i++) {
                var option = document.createElement("option");
                option.value = data.imagenes[i].nombre;
                option.appendChild(document.createTextNode(data.imagenes[i].nombre));
                agr.appendChild(option);
            }
        }
    });
}

function seleccionarImagenDisponible(){
    var form = document.getElementById("frmImagenes");
    var nombre = form.disponibles.value;
    new Ajax.Request("seleccionar-imagen.jsp",{
        method: "post",
        parameters: {
            nombre: nombre
        },
        onSuccess: function(t){
            verImagen();
        },
        onFailure: function(t){
            alert(t.responseText);
        }
    });
}

function seleccionarImagenAgregada(){
    var form = document.getElementById("frmImagenes");
    var nombre = form.agregadas.value;
    new Ajax.Request("seleccionar-imagen.jsp",{
        method: "post",
        parameters: {
            nombre: nombre
        },
        onSuccess: function(t){
            verImagen();
        },
        onFailure: function(t){
            alert(t.responseText);
        }
    });
}

function verImagen(){
    var win = new Ext.Window({
        modal: true,
        title:'Vista Previa',
        closeAction:'destroy',
        width:800,
        height:500,
        x:0,
        y:0,
        shim:false,
        maximizable:false,
        resizable: false,
        animCollapse:false,
        autoLoad: "ver-imagen.jsp"
    });
    win.show();
}

function agregarImagenes() {
    clickImagenDisponible();
    clickImagenAgregada();
    var encontro = false;
    var form = document.getElementById("frmImagenes");
    var disp = form.disponibles;
    var agr = form.agregadas;
    for(var i = 0;i<disp.options.length;i++){
        if (disp.options[i].selected) {
            agregarImagen(disp,agr,disp.options[i]);
            encontro = true;
            break;
        }
    }
    if (encontro) {
        agregarImagenes();
    }
}

function agregarImagen(disp, agr, seleccionado){
    var nombre = seleccionado.value;
    new Ajax.Request("agregar-imagen.jsp",{
        method: "post",
        asynchronous: false,
        parameters: {
            nombre: nombre
        },
        onSuccess: function(t){
            agr.appendChild(seleccionado);
        }
    });

}

function quitarImagenes(){
    clickImagenDisponible();
    clickImagenAgregada();
    var encontro = false;
    var form = document.getElementById("frmImagenes");
    var disp = form.disponibles;
    var agr = form.agregadas;
    for(var i = 0;i<agr.options.length;i++){
        if (agr.options[i].selected) {
            quitarImagen(agr,disp,agr.options[i]);
            encontro = true;
        }
    }
    if (encontro){
        quitarImagenes();
    }
}

function quitarImagen(agr, disp, seleccionado){
    var nombre = seleccionado.value;
    new Ajax.Request("quitar-imagen.jsp",{
        method: "post",
        asynchronous: false,
        parameters: {
            nombre: nombre
        },
        onSuccess: function(t){
            disp.appendChild(seleccionado);
        }
    });
}

function guardarImagenesBD(){
    var grdExpedientes = Ext.getCmp("grdExpedientes");
    var dsExpedientes = grdExpedientes.getStore();
    var registro = dsExpedientes.getAt(0);
    var id = registro.get("id");
    var form = document.getElementById("frmImagenes");
    var disp = form.disponibles;
    var agr = form.agregadas;
    var carpeta = regCarpetaActual.get("nombre");
    new Ajax.Request("grabar-folios.jsp",{
        method: "post",
        parameters: {
            idExpediente: id,
            usuario: localUsuario
        },
        onSuccess: function(t){
            var data = t.responseText.evalJSON();
            if (data.success) {
                var win = Ext.getCmp("winAnexarImagenes");
                win.destroy();
                cargarFolios(idExpedienteActual);
                var grid = Ext.getCmp("grdExpedientes");
                var dsGrid = grid.getStore();
                dsGrid.reload({
                    params: {
                        id: regPersonaActual.get("id")
                    }
                });
            }
        }
    });
}

function clickImagenDisponible(){
    var btn = document.getElementById("btnVistaPreviaDisp");
    var form = document.getElementById("frmImagenes");
    var disp = form.disponibles;
    var encontro = false;
    for(var i = 0; i<disp.options.length;i++){
        if (disp.options[i].selected){
            encontro = true;
        }
    }
    btn.disabled = !encontro;

}

function clickImagenAgregada(){
    var btn = document.getElementById("btnVistaPreviaAgr");
    var form = document.getElementById("frmImagenes");
    var agr = form.agregadas;
    var encontro = false;
    for(var i = 0; i<agr.options.length;i++){
        if (agr.options[i].selected){
            encontro = true;
        }
    }
    btn.disabled = !encontro;
}